﻿using UnityEngine.SceneManagement;

namespace FrameWork
{
    public partial class ResourceModule : BaseModule
    {
        //资源检查器 ResourceChecker
        //资源检查先检查要不要更新下载，如果更新下载，添加到Updaters中。

        //资源更新器 ResourceUpdaters
        //Updater中创建UdpateInfo,将UpdateInfo添加到DownLoadManager中。
        //Updater中提供一个总共的下载大小，这由UpdateInfo提供，包括总进度，由UpdateInfo来计算

        //资源加载器 ResourceLoader
        private Loader _loader;

        public override void Init()
        {
            _loader = new Loader();
        }

        public override void ShutDown()
        {
            
        }

        public override void Update(float deltaTime, float realDeltaTime)
        {
            _loader.Update(deltaTime, realDeltaTime);
        }

        public int LoadAsset<T>(string uniqueKey,LoadAssetCallBack callBack,object userData = null)
        {
            return _loader.LoadAsset<T>(uniqueKey, callBack, userData);
        }

        public void ReleaseAsset(int serializeId)
        {
            _loader.UnloadAsset(serializeId);
        }

        /// <summary>
        /// 加载场景
        /// </summary>
        /// <param name="uniqueKey">场景唯一key</param>
        /// <param name="callBack">场景加载回调</param>
        /// <param name="sceneMode">加载场景Mode</param>
        /// <returns>返回场景id</returns>
        public int LoadScene(string uniqueKey,LoadSceneCallBack callBack,LoadSceneMode sceneMode)
        {
            return _loader.LoadScene(uniqueKey, callBack, sceneMode);
        }

        /// <summary>
        /// 卸载场景
        /// </summary>
        /// <param name="sceneSerializeId">任务唯一序列化id</param>
        /// <param name="callBack">场景卸载回调</param>
        public void UnloadScene(int sceneSerializeId,UnLoadSceneCallBack callBack)
        {
            _loader.UnLoadScene(sceneSerializeId, callBack);
        }
    }
}
